package com.gientech.madp.sm2.service;

import com.gientech.madp.sm2.utils.R;

import java.util.Map;

/**
 * @Author smile_ZhongXuan
 * @Date 2021/10/9 14:22
 * @Version 1.0
 */
public interface SM2Service {

	/**
	 * 生成SM2密钥
	 * @return
	 */
	R generateKey();

	/**
	 * 加签
	 * @param privateKey  私钥
	 * @param map  加签报文体
	 * @return
	 */
	R counterSign(String privateKey,Map map);

	/**
	 * 验签
	 * @param publicKey  公钥
	 * @param map  验签报文体
	 * @return
	 */
	R verifySignature(String publicKey,Map map);

	/**
	 * 校验密钥
	 * @param privateKey  私钥
	 * @param publicKey  公钥
	 * @return
	 */
	R verificationKey(String privateKey, String publicKey);

	/**
	 * 加密
	 * @param publicKey  公钥
	 * @param map  加密报文体
	 * @return
	 */
	R encrypt(String publicKey, Map map);

	/**
	 * 解密
	 * @param privateKey  私钥
	 * @param map  加密后的报文
	 * @return
	 */
	R decrypt(String privateKey, Map map);
}
